package com.sino.androiddesign.customView

import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.util.AttributeSet
import android.view.View

/**
 * 自定义View0
 *
 * 注意事项 继承View 必须重写两个参数的构造函数,否则会找不到其属性
 *
 * 自定义的视图: 画布和画笔
 */
class CustomView0 :View{

    //抗锯齿 让边缘圆滑
    private val mPaint:Paint = Paint(Paint.ANTI_ALIAS_FLAG)

    private val disPlayUtils = context.resources.displayMetrics

    constructor(context: Context):this(context,null)
    constructor(context: Context,attributeSet: AttributeSet?):super(context,attributeSet)


    init {
        initPaint()
    }

    /**
     * setXX 为paint设置各种不同的属性
     * drawXXx 绘制不同的东西
     */
    private fun initPaint() {
        mPaint.isAntiAlias = true
        /**
         * 设置画笔为描边
         * 画笔样式分为三种 :
         * Paint.Style.STROKE 描边
         * Paint.Style.FILL_AND_STROKE 描边并填充
         * Paint.Style.FILL 填充
         */
        mPaint.style = Paint.Style.STROKE
        //设置画笔颜色
        mPaint.color = Color.GREEN
        /**
         * 设置描边的粗细 单位:px
         * 注意:setStrokeWidth(0)的时候描边宽度并不为0 而是指占了一个像素
         */
        mPaint.strokeWidth = 10f

        //设置阴影
        mPaint.setShadowLayer(90f,50f,50f,Color.RED)


    }

    /**
     * 因为onDraw 和onLayout 有可能是一个频繁重复执行的过程,不要在里面实例化对象
     * 自定义view 尽量手动触发视图的更新
     */

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
         //画布的颜色
        canvas!!.drawRGB(255,255,255)
        canvas.drawCircle(disPlayUtils.widthPixels/2.toFloat(),disPlayUtils.heightPixels/2.toFloat(),100f,mPaint)

        val s = "你好这是一个新的东西"
        val measureText = mPaint.measureText(s)
        mPaint.textSize=20f
        canvas.drawText(s,0f,measureText,mPaint)


    }
}